package com.itlr.day04;

import java.util.*;

public class main02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一组字符串:");
        String input = scanner.nextLine();
        
        // 1. 统计每个字母出现的次数
        Map<Character, Integer> letterCount = countLetters(input);
        System.out.println("字母出现次数统计:");
        System.out.println(letterCount);
        
        // 2. 统计每个字母出现的次数，按键字母排序
        Map<Character, Integer> sortedLetterCount = countAndSortLetters(input);
        System.out.println("按键排序的字母出现次数统计:");
        System.out.println(sortedLetterCount);
    }
    
    /**
     * 统计字符串中每个字母出现的次数
     * @param str 输入字符串
     * @return 字母计数的Map
     */
    public static Map<Character, Integer> countLetters(String str) {
        Map<Character, Integer> letterCount = new HashMap<>();
        
        // 遍历字符串中的每个字符
        for (char c : str.toCharArray()) {
            // 只统计字母（忽略大小写，统一转为小写）
            if (Character.isLetter(c)) {
                char lowerChar = Character.toLowerCase(c);
                letterCount.put(lowerChar, letterCount.getOrDefault(lowerChar, 0) + 1);
            }
        }
        
        return letterCount;
    }
    
    /**
     * 统计字符串中每个字母出现的次数并按键排序
     * @param str 输入字符串
     * @return 按键排序的字母计数Map
     */
    public static Map<Character, Integer> countAndSortLetters(String str) {
        // 使用TreeMap自动按键排序
        Map<Character, Integer> sortedLetterCount = new TreeMap<>();
        
        // 遍历字符串中的每个字符
        for (char c : str.toCharArray()) {
            // 只统计字母（忽略大小写，统一转为小写）
            if (Character.isLetter(c)) {
                char lowerChar = Character.toLowerCase(c);
                sortedLetterCount.put(lowerChar, sortedLetterCount.getOrDefault(lowerChar, 0) + 1);
            }
        }
        
        return sortedLetterCount;
    }
}
